﻿Imports System.Data
Imports System.Data.SqlClient
Imports System.IO
Imports System.Configuration.ConfigurationManager
Imports BusinessLogicLayer
Imports BE = BusinessEntities
Partial Class GenerarRendicion
    Inherits System.Web.UI.Page

    Dim str_parametro As String
    Dim str_error As String

    Dim montoGlobalRequisicion As Double
    Dim montoGlobalRendicion As Double
    Dim subTotalGlobalReq_Ren As Double
    Dim debeGlabalTecnico As Double
    Dim debeGlobalAvantec As Double


    Dim mensaje, str_mensaje As String
    Dim grabaren As String
    Dim archivo As String
    Dim nombrearchivo As String

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If Not Page.IsPostBack Then
            CargarGastos()
            CargarTiposDocumentos()

        End If


        str_parametro = Request.QueryString("par")

        Dim usu As Integer
        txtCodRequisicionRend.Text = str_parametro

        usu = Session("USUARIO")
        txtCodUsuarioRend.Text = usu



        Dim beanrequisiscion As New BE.RequisicionDTO
        Dim negocioRequisiciones As New RequisicionBL
        Dim negocioRendiciones As New RendicionesBL
        Dim ds As New DataSet

        beanrequisiscion.Numero_Requisicion = str_parametro

        ds = negocioRequisiciones.listarRequisicion(beanrequisiscion)

        txtMontoRequisicion.Text = ds.Tables("DATA_REQUISICION").Rows(0).Item("TOT_CST")


        txtFachaRendicion.Text = System.DateTime.Today


    End Sub

    Sub CargarTiposDocumentos()
        Dim capanegocios As New RendicionesBL
        Try
            ddlTiposDocumentos.DataSource = capanegocios.ListarTiposDocumentos
            ddlTiposDocumentos.DataValueField = "COD_TIP_DOC"
            ddlTiposDocumentos.DataTextField = "NOM_TIP_DOC"
            ddlTiposDocumentos.DataBind()

        Catch ex As Exception
            Dim str_error As String
            str_error = capanegocios.CapturaError
            Response.Redirect("Errores.aspx?par=" & str_error)
        Finally
            capanegocios = Nothing
        End Try
    End Sub
    Sub CargarGastos()
        Dim capanegocios As New RequisicionBL
        Try
            ddlGastoRend.DataSource = capanegocios.ListarGastos
            ddlGastoRend.DataValueField = "COD_GAS"
            ddlGastoRend.DataTextField = "NOM_GAS"
            ddlGastoRend.DataBind()

        Catch ex As Exception
            Dim str_error As String
            str_error = capanegocios.CapturaError
            Response.Redirect("Errores.aspx?par=" & str_error)
        Finally
            capanegocios = Nothing
        End Try
    End Sub




    Protected Sub btnIngresarRendicion_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnIngresarRendicion.Click

        Dim con As Integer = txtConta.Text

        If con = 0 Then
            txtConta.Text = -1
            ' creamos rendicion
            '-----------------------------------------------------------------
            Dim beanRendicion As New BE.RendicionDTO
            Dim negocio As New RendicionesBL
            Dim negocioR As New RequisicionBL

            With beanRendicion
                .Fecha_Generado_Rendicion = txtFachaRendicion.Text.Trim
                .Codigo_Usuario = txtCodUsuarioRend.Text.Trim
                .Codigo_Estado_Documento = txtEstadoRend.Text.Trim
                .Codigo_Requisicion = txtCodRequisicionRend.Text.Trim
                .Fecha_Firma_Acta = txtFirmaActa.Text.Trim
                .Imagen_Archivo = ""
            End With


            Try
                negocio.InsertarRendicion(beanRendicion)
            Catch ex As Exception

                str_error = negocio.CapturaError
                Response.Redirect("Errores.aspx?par=" & str_error & ex.Message)
            End Try


            txtNroRendicion.Text = negocio.recuperarMaximoRendimiento


        End If

        '-----------------------------------------------------------------

        Dim beanRendiciones As New BE.RendicionDTO
        Dim negocioRendiciones As New RendicionesBL

        With beanRendiciones
            .Codigo_Rendicion = txtNroRendicion.Text.Trim - 1
            .Codigo_Tipo_Documento = ddlTiposDocumentos.SelectedValue
            .Fecha_Recibo_Boleta_factura = txtFecGastoRend.Text
            .Codigo_Gasto = ddlGastoRend.SelectedValue
            .Numero_Recibo_Boleta_Factura = txtNroFacruraRend.Text
            .Descripcion_RCB = txtOBSADDRend.Text
            .Importe_Gasto = Val(txtMontoGastoRend.Text)
        End With

        negocioRendiciones.InsertarRendicion_detalles(beanRendiciones)
        Dim montoRendicion As Double = Val(txtMontoGastoRend.Text) * 1.0
        Dim rendicionacumulado As Double = Val(txtMontoRendicion.Text) * 1.0
        Dim subtotal As Double = Val(txtTotalRequiRend.Text) * 1.0
        Dim montorequisicion As Double = Val(txtMontoRequisicion.Text) * 1.0

        rendicionacumulado += montoRendicion

        txtMontoRendicion.Text = rendicionacumulado

        subtotal = montorequisicion - rendicionacumulado

        txtTotalRequiRend.Text = subtotal

        If subtotal >= 0 Then
            txtAvantecAbonar.Text = subtotal
        Else
            txtTecnicoAbonar.Text = subtotal * -1

        End If

        If Val(txtTecnicoAbonar.Text) > 0 Then
            txtAvantecAbonar.Text = 0
        End If


        CargarResuemnRendicion(beanRendiciones)


    End Sub








    Protected Sub btnGrabarRendicion_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGrabarRendicion.Click



        Dim beanrendicion As New BE.RendicionDTO
        Dim capanegocio As New RendicionesBL
        With beanrendicion
            .Codigo_Rendicion = txtNroRendicion.Text.Trim - 1
            .Gasto_Sub_Total = txtMontoRendicion.Text
            .Devolucion_Importe_Avantec = txtAvantecAbonar.Text
            .Pago_Tecnico = txtTecnicoAbonar.Text
        End With
        capanegocio.actualizarRendicion(beanrendicion)
        Response.Redirect("Home.aspx")
        Dim script As String = "<script language=Javascript>"
        script += "alert('Rendición exitosa');"
        script += "</script>"
        Page.ClientScript.RegisterStartupScript(Me.GetType(), "script", script)
    End Sub

    Protected Sub ddlTiposDocumentos_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlTiposDocumentos.SelectedIndexChanged

    End Sub

    Protected Sub ddlGastoRend_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlGastoRend.SelectedIndexChanged

    End Sub
    'Subir imagen
    Protected Sub btnSubirImagen_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubirImagen.Click

        If CargarArchivo() = True Then

            mensaje = "Se grabó el registro"
            lblresultado.Text = mensaje
            Dim script As String = "<script language=Javascript>"
            script += "alert('" & mensaje & "');"
            script += "</script>"
            Page.ClientScript.RegisterStartupScript(Me.GetType(), "script", script)

            'Response.Redirect("Mantproductos.aspx")

        End If
    End Sub

    Sub CargarResuemnRendicion(ByVal bean As BE.RendicionDTO)

        Dim capanegocios As New RendicionesBL
        Try
            gvdResumen.DataSource = capanegocios.listar_Resumen_Rendicion(bean)
            gvdResumen.DataBind()

        Catch ex As Exception
            str_error = capanegocios.CapturaError

            Response.Redirect("Errores.aspx?par=" & str_error)
        Finally

            capanegocios = Nothing

        End Try
    End Sub


    Public Function CargarArchivo() As Boolean

        'Nos aseguramos que se escoja un archivo antes de enviarlo
        If elarchivo1.HasFile = False Then
            mensaje = "Por favor seleccione un archivo"
            lblresultado.Text = mensaje
            Dim script As String = "<script language=Javascript>"
            script += "alert('" & mensaje & "');"
            script += "</script>"
            Page.ClientScript.RegisterStartupScript(Me.GetType(), "script", script)
            Return False
            Exit Function
        End If


        If elarchivo1.PostedFile.ContentLength / 1024 > 100 Then

            mensaje = "Muy grande"
            lblresultado.Text = mensaje
            Dim script As String = "<script language=Javascript>"
            script += "alert('" & mensaje & "');"
            script += "</script>"
            Page.ClientScript.RegisterStartupScript(Me.GetType(), "script", script)
            Return False
            Exit Function

        End If

        archivo = AppSettings("RutaArchivos") + elarchivo1.FileName


        Dim thefile As FileInfo = New FileInfo(archivo)


        If Not (thefile.Extension = ".jpg" Or thefile.Extension = ".jpeg" Or thefile.Extension = ".gif" Or thefile.Extension = ".ods" Or thefile.Extension = ".xlsx" Or thefile.Extension = ".xml" Or thefile.Extension = ".xlsm") Then
            mensaje = "El archivo debe ser de una de las extensiones indicadas"
            lblresultado.Text = mensaje
            Dim script As String = "<script language=Javascript>"
            script += "alert('" & mensaje & "');"
            script += "</script>"
            Page.ClientScript.RegisterStartupScript(Me.GetType(), "script", script)
            Return False
            Exit Function
        End If

        'Si el archivo a subir existe en la bandeja del expediente lo renombramos
        If thefile.Exists = True Then
            Dim random As String = (Int((9999999 - 1111111 + 1) * Rnd() + 1111111)).ToString()
            nombrearchivo = "Pictures" & "/" & random + Path.GetFileName(elarchivo1.PostedFile.FileName)

            grabaren = AppSettings("RutaArchivos") + random + elarchivo1.FileName

        Else
            nombrearchivo = "Pictures" & "/" & Path.GetFileName(elarchivo2.PostedFile.FileName)

            grabaren = AppSettings("RutaArchivos") + elarchivo1.FileName
        End If

        'Instanciamos la clase
        Dim capanegocios As New RendicionesBL
        Dim beanRendicion As New BE.RendicionDTO
        With beanRendicion
            .Codigo_Rendicion = txtNroRendicion.Text - 1
            .Imagen_Archivo = nombrearchivo
        End With


        If capanegocios.actualizarArchivoRendicion(beanRendicion) = True Then

            'Levantamos el archivo al servidor
            elarchivo2.PostedFile.SaveAs(grabaren)

            mensaje = "El archivo fue enviado al servidor"
            Dim script As String = "<script language=Javascript>"
            script += "alert('" & mensaje & "');"
            script += "</script>"
            Page.ClientScript.RegisterStartupScript(Me.GetType(), "script", script)
            Return True

        End If

    End Function


    Protected Sub gvdResumen_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles gvdResumen.SelectedIndexChanged

    End Sub

    Sub Eliminar(ByVal src As Object, ByVal args As CommandEventArgs)

        Dim str_cliente As String
        str_cliente = args.CommandName
        Dim capanegocios As New RendicionesBL
        Dim objeto As New BE.RendicionDTO


        Try
            'Llenamos la propiedad que nos interesa 
            objeto.Id_Rendicion = str_cliente
            objeto.Codigo_Rendicion = txtNroRendicion.Text - 1

            If capanegocios.eliminarRendicionDetalle(objeto) = True Then
                str_mensaje = "Se eliminó Correctamente"

                'Mostramos el resultado en una ventana emergente 
                Dim script As String = "<script language=Javascript>"
                script += "alert('" & str_mensaje & "');"
                script += "</script>"
                Page.ClientScript.RegisterStartupScript(Me.GetType(), "script", script)

                'Volvemos a listar los datos
                CargarResuemnRendicion(objeto)
                'MsgBox("Exito")
            Else
                'MsgBox("Error")
                str_mensaje = "No se puede eliminar"
                Dim script As String = "<script language=Javascript>"
                script += "alert('" & str_mensaje & "');"
                script += "</script>"
                Page.ClientScript.RegisterStartupScript(Me.GetType(), "script", script)
            End If

        Catch ex As Exception

            str_error = capanegocios.CapturaError

            Response.Redirect("Errores.aspx?id=" & str_error)
        Finally

            capanegocios = Nothing
            objeto = Nothing


        End Try


    End Sub
End Class
